package cn.tedu.test.rabbitmq.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Map;

/**
 * rabbitmq整合spring之后 所需要的组件声明
 * 实现代码方式上 就变成了 配置创建bean对象
 * 声明一个queue 创建queue bean对象
 * 声明一个exchange 创建exchange bean对象
 * 声明一个绑定关系 创建bind bean对象
 */
@Configuration
public class DeclareConfiguration {

    //channel.queueDeclare(name,durable,exclusive,autoDelete,arguments)
    @Bean
    public Queue demoQueue(){
        //创建queue 对象 做方法的返回值 根据需求 指定queue属性
        //new Queue("demoQueue",true,false,false,null);
        //框架 准备了一套构建工具 builder
        return QueueBuilder.durable("demo-queue").build();
    }
    //channel.exchangeDeclare(name,type);
    @Bean
    public Exchange demoExchange(){
        return  ExchangeBuilder.directExchange("demo-exchange").build();
    }
    //channel.queueBind(queue,exchange,routingKey)
    @Bean
    public Binding demoBind(){
        //demo-queue demo-exchange routing_key
        return BindingBuilder.bind(demoQueue()).to(demoExchange())
                .with("demo-rk").noargs();
    }




















}
